home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.20-15 / scripts / Makefile.headersinst < prev    next >
Encoding:
Makefile  |  2007-04-12  |  6.8 KB  |  195 lines

  1. # ==========================================================================
  2. # Installing headers
  3. #
  4. # header-y files will be installed verbatim
  5. # unifdef-y are the files where unifdef will be run before installing files
  6. # objhdr-y are generated files that will be installed verbatim
  7. #
  8. # ==========================================================================
  9.  
  10. UNIFDEF := scripts/unifdef -U__KERNEL__
  11.  
  12. # Eliminate the contents of (and inclusions of) compiler.h
  13. HDRSED  := sed     -e "s/ inline / __inline__ /g" \
  14.         -e "s/[[:space:]]__user[[:space:]]\+/ /g" \
  15.         -e "s/(__user[[:space:]]\+/ (/g" \
  16.         -e "s/[[:space:]]__force[[:space:]]\+/ /g" \
  17.         -e "s/(__force[[:space:]]\+/ (/g" \
  18.         -e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \
  19.         -e "s/(__iomem[[:space:]]\+/ (/g" \
  20.         -e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /g" \
  21.         -e "s/[[:space:]]__attribute_const__$$//" \
  22.         -e "/^\#include <linux\/compiler.h>/d"
  23.  
  24. _dst := $(if $(dst),$(dst),$(obj))
  25.  
  26. ifeq (,$(patsubst include/asm/%,,$(obj)/))
  27. # For producing the generated stuff in include/asm for biarch builds, include
  28. # both sets of Kbuild files; we'll generate anything which is mentioned in
  29. # _either_ arch, and recurse into subdirectories which are mentioned in either
  30. # arch. Since some directories may exist in one but not the other, we must
  31. # use $(wildcard...). 
  32. GENASM := 1
  33. archasm       := $(subst include/asm,asm-$(ARCH),$(obj))
  34. altarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj))
  35. KBUILDFILES := $(wildcard $(srctree)/include/$(archasm)/Kbuild $(srctree)/include/$(altarchasm)/Kbuild)
  36. else
  37. KBUILDFILES := $(srctree)/$(obj)/Kbuild
  38. endif
  39.  
  40. include $(KBUILDFILES)
  41.  
  42. include scripts/Kbuild.include 
  43.  
  44. # If this is include/asm-$(ARCH) and there's no $(ALTARCH), then
  45. # override $(_dst) so that we install to include/asm directly.
  46. # Unless $(BIASMDIR) is set, in which case we're probably doing
  47. # a 'headers_install_all' build and we should keep the -$(ARCH)
  48. # in the directory name.
  49. ifeq ($(obj)$(ALTARCH),include/asm-$(ARCH)$(BIASMDIR))
  50.      _dst := include/asm
  51. endif
  52.  
  53. header-y    := $(sort $(header-y))
  54. unifdef-y    := $(sort $(unifdef-y))
  55. subdir-y    := $(patsubst %/,%,$(filter %/, $(header-y)))
  56. header-y    := $(filter-out %/, $(header-y))
  57. header-y    := $(filter-out $(unifdef-y),$(header-y))
  58.  
  59. # stamp files for header checks
  60. check-y        := $(patsubst %,.check.%,$(header-y) $(unifdef-y) $(objhdr-y))
  61.  
  62. # Work out what needs to be removed
  63. oldheaders    := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/*.h))
  64. unwanted    := $(filter-out $(header-y) $(unifdef-y) $(objhdr-y),$(oldheaders))
  65.  
  66. oldcheckstamps    := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/.check.*.h))
  67. unwanted    += $(filter-out $(check-y),$(oldcheckstamps))
  68.  
  69. # Prefix them all with full paths to $(INSTALL_HDR_PATH)
  70. header-y     := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(header-y))
  71. unifdef-y     := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(unifdef-y))
  72. objhdr-y     := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(objhdr-y))
  73. check-y     := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(check-y))
  74.  
  75.  
  76. ifdef ALTARCH
  77. ifeq ($(obj),include/asm-$(ARCH))
  78. altarch-y    := altarch-dir
  79. endif
  80. endif
  81.  
  82. # Make the definitions visible for recursive make invocations
  83. export ALTARCH
  84. export ARCHDEF
  85. export ALTARCHDEF
  86.  
  87. quiet_cmd_o_hdr_install   = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
  88.       cmd_o_hdr_install   = cp $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(objtree)/$(obj)/%,$@) \
  89.                 $(INSTALL_HDR_PATH)/$(_dst)
  90.  
  91. quiet_cmd_headers_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
  92.       cmd_headers_install = $(HDRSED) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@)    \
  93.                 > $@
  94.  
  95. quiet_cmd_unifdef      = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
  96.       cmd_unifdef      = $(UNIFDEF) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@) \
  97.                    | $(HDRSED) > $@ || :
  98.  
  99. quiet_cmd_check          = CHECK   $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/.check.%,$(_dst)/%,$@)
  100.       cmd_check          = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \
  101.                               $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@
  102.  
  103. quiet_cmd_remove      = REMOVE  $(_dst)/$@
  104.       cmd_remove      = rm -f $(INSTALL_HDR_PATH)/$(_dst)/$@
  105.  
  106. quiet_cmd_mkdir          = MKDIR   $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
  107.       cmd_mkdir          = mkdir -p $@
  108.  
  109. quiet_cmd_gen          = GEN     $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
  110.       cmd_gen          = \
  111. FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@)            \
  112. STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z.- A-Z__`;            \
  113. (echo "/* File autogenerated by 'make headers_install' */" ;        \
  114. echo "\#ifndef $$STUBDEF" ;                        \
  115. echo "\#define $$STUBDEF" ;                        \
  116. echo "\# if $(ARCHDEF)" ;                        \
  117. if [ -r $(subst /$(_dst)/,/include/$(archasm)/,$@) ]; then        \
  118.     echo "\#  include <$(archasm)/$$FNAME>" ;            \
  119. else                                    \
  120.     echo "\#  error $(archasm)/$$FNAME does not exist in"        \
  121.             "the $(ARCH) architecture" ;            \
  122. fi ;                                    \
  123. echo "\# elif $(ALTARCHDEF)" ;                        \
  124. if [ -r $(subst /$(_dst)/,/include/$(altarchasm)/,$@) ]; then        \
  125.     echo "\#  include <$(altarchasm)/$$FNAME>" ;            \
  126. else                                    \
  127.     echo "\#  error $(altarchasm)/$$FNAME does not exist in"    \
  128.             "the $(ALTARCH) architecture" ;            \
  129. fi ;                                    \
  130. echo "\# else" ;                            \
  131. echo "\#  warning This machine appears to be"                \
  132.          "neither $(ARCH) nor $(ALTARCH)." ;            \
  133. echo "\# endif" ;                            \
  134. echo "\#endif /* $$STUBDEF */" ;                    \
  135. ) > $@
  136.  
  137. .PHONY: __headersinst __headerscheck
  138.  
  139. ifdef HDRCHECK
  140. __headerscheck: $(subdir-y) $(check-y)
  141.     @true
  142.  
  143. $(check-y) : $(INSTALL_HDR_PATH)/$(_dst)/.check.%.h : $(INSTALL_HDR_PATH)/$(_dst)/%.h 
  144.     $(call cmd,check)
  145.  
  146. # Other dependencies for $(check-y)
  147. -include /dev/null $(check-y)
  148.  
  149. # ... but leave $(check-y) as .PHONY for now until those deps are actually correct.
  150. .PHONY: $(check-y)
  151.  
  152. else
  153. # Rules for installing headers
  154. __headersinst: $(subdir-y) $(header-y) $(unifdef-y) $(altarch-y) $(objhdr-y)
  155.     @true
  156.  
  157. $(objhdr-y) $(subdir-y) $(header-y) $(unifdef-y): | $(INSTALL_HDR_PATH)/$(_dst) $(unwanted)
  158.  
  159. $(INSTALL_HDR_PATH)/$(_dst):
  160.     $(call cmd,mkdir)
  161.  
  162. .PHONY: $(unwanted)
  163. $(unwanted):
  164.     $(call cmd,remove)
  165.  
  166. ifdef GENASM
  167. $(objhdr-y) $(header-y) $(unifdef-y): $(KBUILDFILES)
  168.     $(call cmd,gen)
  169.  
  170. else
  171. $(objhdr-y) :        $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(objtree)/$(obj)/%.h $(KBUILDFILES)
  172.     $(call cmd,o_hdr_install)
  173.  
  174. $(header-y) :        $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(KBUILDFILES)
  175.     $(call cmd,headers_install)
  176.  
  177. $(unifdef-y) :        $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(KBUILDFILES)
  178.     $(call cmd,unifdef)
  179. endif
  180. endif
  181.  
  182. hdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
  183.  
  184. .PHONY: altarch-dir
  185. # All the files in the normal arch dir must be created first, since we test
  186. # for their existence.
  187. altarch-dir: $(subdir-y) $(header-y) $(unifdef-y) $(objhdr-y)
  188.     $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH)
  189.     $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm$(BIASMDIR)
  190.  
  191. # Recursion
  192. .PHONY: $(subdir-y)
  193. $(subdir-y):
  194.     $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel)
  195.